/*
 * Nodo.h
 *
 */

#ifndef NODO_H_
#define NODO_H_

#include <list>
#include <iostream>
#include <stack>


using namespace std;


class Nodo {

private:

	void imprimirInOrder(Nodo* nodo, string & s);
	void imprimirRecursivo(Nodo* n, stack<Nodo*> s);

	string dato;



public:
	list<Nodo*> listaNodos;
	int nroLinea;
	Nodo(string str);
	Nodo(string str, list<Nodo*> vec);
	Nodo(string str,int numLinea);
	string getDato();
	string getTipoDato();
	string getValor();

	list<Nodo*>* obtenerLista();
	void agregarPtr(Nodo* nodo);
	void eliminarPtr(Nodo* nodo);
	Nodo* buscar(string dato);
	void normalizar();
	int getNumeroDeLinea();
	void imprimir();


	virtual ~Nodo();

	friend class ASTCpp;
};

#endif /* NODO_H_ */
